home *** CD-ROM | disk | FTP | other *** search
/ Delphi Programmer's Power Pack / Delphi Volume 1.iso / e_to_l / isamexpt / wntisam1.pas < prev    next >
Pascal/Delphi Source File  |  1996-09-15  |  14KB  |  485 lines

  1. {HISTORY of Changes:
  2.   18.01.1996 Property NAME of ISAMBROWSER changed form ISAMBROWSER1 to RECORDNAME+BROWSER1
  3.   }
  4. unit Wntisam1;
  5.  
  6. interface
  7. Uses Classes, Forms, Graphics;
  8.  
  9. Function Erzeuge_BrowserForm(const FormIdent, TblName: string;
  10.                              IniDatNam,IniBrwNam: String;
  11.                              Fnt: TFont;
  12.                              IIDList,KeyList,RecList: TStringList;
  13.                              DBase_Export,DBase_Import: Boolean;
  14.                              Sprache: Integer;
  15.                              TblCreateBttn, SetupBttnCheck: Boolean): TForm;
  16.  
  17. implementation
  18.  
  19. Uses UToolDll, WinTypes, WinProcs, SysUtils,
  20.      ExtCtrls, Buttons, Controls, IsamTabl, IsamNav, IsamBrow,
  21.      Proxies, IStreams, FvcBrows;
  22.  
  23. Function Erzeuge_BrowserForm(const FormIdent, TblName: string;
  24.                              IniDatNam,IniBrwNam: String;
  25.                              Fnt: TFont;
  26.                              IIDList,KeyList,RecList: TStringList;
  27.                              DBase_Export,DBase_Import: Boolean;
  28.                              Sprache: Integer;
  29.                              TblCreateBttn, SetupBttnCheck: Boolean): TForm;
  30. var
  31.   BtnPos         : TPoint;
  32.   EdMethod,Method: TMethod;
  33.   MP,UP,Up1,Up2,Up3: TPanel;
  34.   SP             : TSpeedButton;
  35.   Tbl            : TIsamTable;
  36.   Tm             : TTimer;
  37.   i,k            : Integer;
  38.   ND             : TIsamNavigator;
  39.   Grd            : TIsamBrowser;
  40.   Hdr            : THeader;
  41.   x              : Integer;
  42.   RStr,NStr,xStr,RNam : String;
  43.   Liste1,Liste2,Liste3: TStringList;
  44. begin
  45.   Result := TProxyForm.CreateAs('T' + FormIdent);
  46.   with Result do begin
  47.     BorderStyle := bsDialog;
  48.     AutoScroll  := True;
  49.     Left  := 92;
  50.     Top   := 97;
  51.     Width := 562;
  52.     Height:= 352;
  53.     Position := poScreenCenter;
  54.     Name := FormIdent;
  55.     Caption := 'Browser';
  56.     Method.Code := TProxyForm(Result).CreateMethod('FormCreate');
  57.     Method.Data := Result;
  58.     OnCreate    := TNotifyEvent(Method);
  59.     Method.Code := TProxyForm(Result).CreateMethod('FormDestroy');
  60.     Method.Data := Result;
  61.     OnDestroy   := TNotifyEvent(Method);
  62.     Method.Code := TProxyForm(Result).CreateMethod('FormShow');
  63.     Method.Data := Result;
  64.     OnShow      := TNotifyEvent(Method);
  65.     with Font do begin
  66.       Color := clBlack;
  67.       Height:= -11;
  68.       Name := 'Arial';
  69.       Size := 8;
  70.       Style:= [fsBold];
  71.     end;
  72.  
  73.     MP:= TPanel.Create(Result);
  74.     with MP do begin
  75.       Parent := Result;
  76.       Name   := 'Panel1';
  77.       Left   := 0;
  78.       Top    := 0;
  79.       Width  := 554;
  80.       Height := 41;
  81.       Align  := alTop;
  82.       ParentShowHint:= False;
  83.       ShowHint := True;
  84.       TabOrder := 1;
  85.       Caption:= '';
  86.     end;
  87.  
  88.     Tm:= TTimer.Create(Result);
  89.     With Tm do begin
  90.       Interval:= 1000;
  91.       Name:= FormIdent+'Timer';
  92.       Method.Code := TProxyForm(Result).CreateMethod(FormIdent+'TimerTimer');
  93.       Method.Data := Result;
  94.       Tm.OnTimer := TNotifyEvent(Method);
  95.     end;
  96.  
  97.     Hdr:= THeader.Create(Result);
  98.     with Hdr do begin
  99.       Parent:= Result;
  100.       Name:= 'HEADER1';
  101.       Left:= 0;
  102.       Top:= 41;
  103.       Height:= 25;
  104.       Width:= 554;
  105.       Method.Code := TProxyForm(Result).CreateMethod('Header1Sized');
  106.       Method.Data := Result;
  107.       OnSized:= TSectionEvent(Method);
  108.     end;
  109.  
  110.     Tbl:= TIsamTable.Create(Result);
  111.     with Tbl do begin
  112.       Name:= FormIdent+'TABLE';
  113.       TableName:= TblName;
  114.       BrowserName:= 'IsamBrowser1';
  115.       HeaderName:= 'HEADER1';
  116.       Ansiconvert:= True;
  117.       Liste1:= TStringList.Create;
  118.       {IIDProc.Clear;}
  119.       x:= 0;
  120.       While x < IIDList.Count do begin
  121.         Liste1.Add(IIDList[x]);
  122.         Inc(x);
  123.       end;
  124.       MaxKeys:= x;
  125.       IIDProc:= Liste1;
  126.       Liste1.Free;
  127.       Liste2:= TStringList.Create;
  128.       {IsamRecord.Clear;}
  129.       RecordName:= '';
  130.       x:= 0;
  131.       While x < RecList.Count do begin
  132.         Liste2.Add(RecList[x]);
  133.         RStr:= Uppercase(RecList[x]);
  134.         Strip(RStr);
  135.         if Pos('=RECORD',RStr) > 0 then RecordName:= Copy(RStr,1,Pos('=RECORD',RStr)-1);
  136.         inc(x);
  137.       end;
  138.       RNam:= RecordName;
  139.       IsamRecord:= Liste2;
  140.       Liste2.Free;
  141.       {IsamKeyProc.Clear;}
  142.       Liste3:= TStringList.Create;
  143.       K:= 0;
  144.       if KeyList.Count > 0 then begin
  145.         Liste3.Add('Function '+RNam+'KeyProc(Var Daten; KeyNr:Word): IsamKeyStr;');
  146.         Liste3.Add('var s : String;');
  147.         Liste3.Add('begin');
  148.         Liste3.Add('  s:= '+Chr(39)+Chr(39)+';');
  149.         Liste3.Add('  With '+RNam+'(Daten) do begin');
  150.         Liste3.Add('    case KeyNr of');
  151.         For x:= 0 to KeyList.Count-1 do begin
  152.           NStr:= KeyList[x];
  153.           NStr:= UpperCase(NStr);
  154.           if Pos(';',NStr) = 0 then KeyList[x]:= KeyList[x]+';';
  155.           Strip(NStr);
  156.           if (Pos('KEYBEGIN',NStr) = 0) and (Pos('KEYEND',NStr) = 0) then begin
  157.             inc(K);
  158.             Str(k,xStr);
  159.             Liste3.Add(xStr+': '+KeyList[x]);
  160.           end;
  161.         end;
  162.         Liste3.Add('    end;');
  163.         Liste3.Add('  end;');
  164.         Liste3.Add('  '+RNam+'KEYPROC:= S;');
  165.         Liste3.Add('end;');
  166.       end;
  167.       IsamKeyProc:= Liste3;
  168.       Liste3.Free;
  169.       MyUnitName:= FormIdent;
  170.     end;
  171.  
  172.     Grd:= TIsamBrowser.Create(Result);
  173.     with Grd do begin
  174.       Parent          := Result;
  175.       Name            := RNam+'Browser1';
  176.       Left            := 0;
  177.       Top             := 66;
  178.       Width           := 554;
  179.       Height          := 232;
  180.       Align           := alNone;
  181.       JustRightChar   := '░';
  182.       JustLeftChar    := '|';
  183.       JustCenterChar  := '~';
  184.       Color           := clSilver;
  185.       BrowserHeader   := Hdr;
  186.       Table           := Tbl;
  187.       Font.Color      := Fnt.Color;
  188.       Font.Height     := Fnt.Height;
  189.       Font.Name       := Fnt.Name;
  190.       Font.Style      := Fnt.Style;
  191.       ParentFont      := False;
  192.       TabOrder        := 2;
  193.       EdMethod.Code := TProxyForm(Result).CreateMethod('EditBttnClick');
  194.       EdMethod.Data := Result;
  195.       Grd.OnDblClick  := TNotifyEvent(EdMethod);
  196.       Method.Code:= TProxyForm(Result).CreateMethod(RNam+'Browser1BuildRow');
  197.       Method.Data:= Result;
  198.       Grd.OnBuildRow:= TBuildRowEvent(Method);
  199.     end;
  200.  
  201.     ND:= TIsamNavigator.Create(Result);
  202.     with ND do begin
  203.       Parent:= MP;
  204.       Browser:= Grd;
  205.       Name:= 'IsamNavigator1';
  206.       ConfirmDelete:= False;
  207.       Left:= 8;
  208.       Top:= 8;
  209.       VisibleButtons:= [nbFirst,nbPrior,nbNext,nbLast];
  210.       Width:= 100;
  211.     end;
  212.  
  213.     Sp:= TSpeedButton.Create(Result);
  214.     with SP do begin
  215.       Parent:= MP;
  216.       Left:= 128;
  217.       Top := 8;
  218.       Width := 25;
  219.       Height := 25;
  220.       if Sprache = 1 then Hint:= 'New record'
  221.       else Hint := 'Neuer Datensatz';
  222.       Name := 'NeuBttn';
  223.       Glyph.Handle:= LoadBitmap(HInstance,'IS_NEU');
  224.       Method.Code := TProxyForm(Result).CreateMethod('NeuBttnClick');
  225.       Method.Data := Result;
  226.       Sp.OnClick := TNotifyEvent(Method);
  227.     end;
  228.  
  229.     Sp:= TSpeedButton.Create(Result);
  230.     with SP do begin
  231.       Parent:= MP;
  232.       Left:= 156;
  233.       Top := 8;
  234.       Width := 25;
  235.       Height := 25;
  236.       if Sprache = 1 then Hint:= 'Edit record'
  237.       else Hint := 'Datensatz bearbeiten';
  238.       Name := 'EditBttn';
  239.       Glyph.Handle:= LoadBitmap(HInstance,'IS_AENDERN');
  240.       Sp.OnClick := TNotifyEvent(EdMethod);
  241.     end;
  242.  
  243.     Sp:= TSpeedButton.Create(Result);
  244.     with SP do begin
  245.       Parent:= MP;
  246.       Left:= 184;
  247.       Top := 8;
  248.       Width := 25;
  249.       Height := 25;
  250.       if Sprache = 1 then Hint:= 'Search'
  251.       else Hint := 'Suchen';
  252.       Name := 'SuchBttn';
  253.       Glyph.Handle:= LoadBitmap(HInstance,'IS_SUCH');
  254.       Method.Code := TProxyForm(Result).CreateMethod('SuchBttnClick');
  255.       Method.Data := Result;
  256.       Sp.OnClick := TNotifyEvent(Method);
  257.     end;
  258.  
  259.     Sp:= TSpeedButton.Create(Result);
  260.     with SP do begin
  261.       Parent:= MP;
  262.       Left:= 212;
  263.       Top := 8;
  264.       Width := 25;
  265.       Height := 25;
  266.       if Sprache = 1